package com.yuantu.judiciary.model.domain;

import com.yuantu.judiciary.model.BaseDO;
import com.yuantu.judiciary.model.enums.InvoiceState;
import com.yuantu.judiciary.model.enums.InvoiceType;
import com.yuantu.judiciary.model.enums.OrganizationType;
import lombok.Data;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.*;

/**
 * 发票信息
 *
 * @author syw
 * @since 2023-07-04
 **/
@Data
@Entity
@DynamicUpdate
@Table(name = "invoice_info")
public class InvoiceInfoDO extends BaseDO {

    /**
     * 订单id
     */
    @Column(nullable = false)
    @Comment("订单id")
    private Long orderId;

    /**
     * 发票类型
     */
    @Enumerated(EnumType.STRING)
    @Column(length = 50, nullable = false)
    @Comment("发票类型")
    private InvoiceType type;

    /**
     * 开票信息
     */
    @Enumerated(EnumType.STRING)
    @Column(length = 50, nullable = false)
    @Comment("开票信息")
    private OrganizationType orgType;

    /**
     * 企业名称
     */
    @Comment("企业名称")
    private String enterName;

    /**
     * 企业税号
     */
    @Comment("企业税号")
    private String taxNumber;

    /**
     * 企业地址
     */
    @Comment("企业地址")
    private String enterAddr;

    /**
     * 企业电话
     */
    @Comment("企业电话")
    private String enterPhone;

    /**
     * 开户银行
     */
    @Comment("开户银行")
    private String depositBank;

    /**
     * 银行账户
     */
    @Comment("银行账户")
    private String bankAccount;

    /**
     * 个人姓名
     */
    @Comment("个人姓名")
    private String personName;

    /**
     * 收票人手机
     */
    @Comment("收票人手机")
    private String personPhone;

    /**
     * 收票人邮箱
     */
    @Comment("收票人邮箱")
    private String personEmail;


    /**
     * 接收人
     */
    @Comment("接收人")
    private String receiver;

    /**
     * 接收人手机号
     */
    @Comment("接收人手机号")
    private String receiverPhone;

    /**
     * 接收地址
     */
    @Comment("接收地址")
    private String receiverAddr;

    /**
     * 发票状态：开票中，已开票
     */
    @Enumerated(EnumType.STRING)
    @Comment("发票状态：开票中，已开票")
    private InvoiceState state;
}
